package com.yangbwe.Springtest.SpringAOP;

import jdk.internal.org.objectweb.asm.tree.analysis.Value;
import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.AfterReturning;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;

import java.util.Date;

/**
 * Aspect表示这个类是切面类，这个类是为了增强代码而实现的
 */
@Aspect
public class SpringAspect {
/**
 *  方法定义要求
 *  公共方法public
 *  方法没有返回值
 *  方法自定义名称
 * @before是前置通知，在目标方法之前执行
 *    属性：vale  切入点表达式
 *    在方法上
 *
  */

    @Before(value = "execution(public void com.yangbwe.Springtest.SpringAOP.dosomeServiceImpl.dosome(String,String))")
    public void myaspect(){

        System.out.println("切面中的前置方法被执行了"+new Date());
    }

    @AfterReturning(value = "execution(public String com.yangbwe.Springtest.SpringAOP.dosomeServiceImpl.dosome2(..))",returning = "res")
    public void myaspect2(Object res){
        System.out.println("切面中的后置方法被执行了"+res);
//        System.out.println("return 的方法是");
    }


//    执行测试对应的是test中的AOPtest
}
